/* eslint-disable */
/**
 * @name  接收一个Promise可迭代对象，只要其中的一个promise成功，就返回那个已经成功的promise。如果可迭代对象中没有一个promise成功（即所有的promises都失败/拒绝），就返回一个失败的promise和AggregateError类型的实例，它是Error的一个子类，用于把单一的错误集合在一起。本质上，这个方法和all是相反的
 * @param {promise} promises
 * @returns  promise
 */

const any = function any(promises) {
  let _resolve, _reject;
  const retPromise = new Promise((resolve, reject) => {
    _resolve = resolve;
    _reject = reject;
  });
  let count = 0;
  for (const promise of promises) {
    Promise.resolve(promise).then(
      res => {
        _resolve(res);
      },
      () => {
        count++;
        if (count === promises.length) {
          _reject(new Error('All promises were rejected'));
        }
      }
    );
  }
  return retPromise;
};
export default any;
